package org.fioma.tree;

public interface Node<L, I extends InternalNode<L, I, F, N>, F extends LeafNode<L, I, F, N>, N extends Node<L, I, F, N>> {

	public I getParent();

	public void setParent(I parent);

	public L getLabel(); // get the label text w of the incoming edge

	public void setLabel(L label); // set the label text w of the incoming edge

	// add a new node in the position pos of the current label.
	// The letter in the position pos of the current label will belong to the
	// current label Node
	// public F addNode(byte pos, L word);

	// public short getLengthLabel();

	// public byte[] getSuffix(); // get the text of the path from root to this
	// node

	// public byte[] getWord(byte start, byte end); // get substring of the text
	// of the path from this node to root parent edge (reverse of suffix)

	// public int addSuffix(L suffix);

	// public int addToSuffixTree(SuffixNode tree, L prefix, int phase);

	public boolean isLeaf();

	public boolean isRoot();

}
